WSL:在 Windows 下搭建完整的 Linux 开发环境

1. 安装 WSL

Windows 子系统 (WSL) 允许开发人员在 Windows 计算机上运行 Linux 发行版,如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等。通过 WSL,用户可以直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具,而无需虚拟机或双启动设置。

启用 WSL:

# 启用适用于 Linux 的 Windows 子系统
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# 启用虚拟机平台
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# 将 WSL 2 设置为默认版本
wsl --set-default-version 2

可以通过运行 wsl --list --online 来查找可用的分发版,为了方便,以及 AUR 确实很吸引人,所以我选用 Arch Linux 进行安装:

wsl --install -d archlinux --no-launch

同时一些其他的安装选项:

  • --web-download :从联机源安装,而不是使用 Microsoft Store(适宜没有魔法的网络环境);
  • --location :指定要将 WSL 分发版安装到哪个文件夹。

配置镜像网络模式,新建文件.wslconfig到用户目录:

[wsl2]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true

2. 配置 WSL

2.1 新建 wheel 用户

使用 WSL 安装 Linux 发行版的过程完成后,运行 wsl 命令以启动你安装的 WSL 实例,目前,Arch Linux 发行版会默认以 root 身份进入系统,我们先更新系统并安装所需工具:

pacman -Syu
pacman -S zsh sudo nano

为了确保安全,我们这里将开始配置一个 wheel 组的普通用户:

useradd -m -G wheel -s /usr/bin/zsh <username>

后文中的<username>将全部被 camelliatse 代替

注意到我们这里添加的用户没有设定密码,如果 sudo 要求输入密码,将无法完成。因此我们需要让 wheel 组的成员执行 sudo 时无需输入密码。执行:

visudo

找到下面这行(默认被注释):

# %wheel ALL=(ALL) NOPASSWD: ALL

将其取消注释并保存即可:

%wheel ALL=(ALL) NOPASSWD: ALL

为了让每次启动 Arch 都自动以 camelliatse 登录,输入exit退出登录,在 Windows 的 PowerShell(管理员权限可选) 中执行:

wsl --manage archlinux --set-default-user camelliatse

2.2 系统基础配置

重新运行wsl以回到 Arch Linux 中

2.2.1 关闭环境变量继承和启用systemd

编辑 /etc/wsl.conf:

[interop]
appendWindowsPath = false
[boot]
systemd = true

2.2.2 更新系统并安装常用工具

sudo pacman -Syyu
sudo pacman -S --needed base-devel git curl wget vim mise

base-devel 提供编译工具链(gcc、make 等),是许多 AUR 包的基础。

2.2.3 设置 Locale(支持中文)

编辑 /etc/locale.gen,取消注释你需要的语言环境(例如中文 zh_CN.UTF-8 和英文 en_US.UTF-8):

sudo vim /etc/locale.gen

找到并取消注释:

en_US.UTF-8 UTF-8
zh_CN.UTF-8 UTF-8

然后执行:

sudo locale-gen

设置系统默认语言(可选,推荐保留英文,终端兼容性更好):

echo 'LANG=en_US.UTF-8' | sudo tee /etc/locale.conf

2.2.4 设置时区

sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2.2.5 自动配置镜像

sudo pacman -S reflector
sudo reflector --country China --protocol https --sort rate --save /etc/pacman.d/mirrorlist

2.3 系统开发环境配置

2.3.1 安装 mise

sudo pacman -S mise

2.3.2 使用 mise 管理版本

mise use -g node@lts
mise use -g pnpm@latest
mise use -g python@3.12

之后可在项目目录中通过 mise use 切换特定版本,实现环境隔离。